The Web is now programmable. The availability of Web data in the form of structured extensible markup language (XML) feeds, e.g., really simple syndication (RSS 2.0), resource description framework site summary (RSS 1.0 and RSS 0.90), rich site summary (RSS 0.91), and atom syndication format (Atom), as well as the externalization of Web application interactions in the form of application programming interface (APIs), has facilitated and accelerated programmable aspects of the Web. Most new Web sites and applications either expose data feeds or expose more advanced APIs such as representational state transfer (REST) services or atom publishing protocol (APP).
There are two paradigm shifts occurring on the Web that are changing the way software is developed. The first is the increasing availability of Web APIs or Web services in the form of REST, APP, and simple object access protocol (SOAP) services, as well as RSS and Atom data services. The proliferation of Web APIs has resulted in various composed services with user interfaces (UIs), or mashups, which provide solutions to problems, sometimes specific or relatively narrow problems. The second paradigm shift is a movement to Web applications using dynamic programming languages and frameworks, e.g., JavaScript™ with asynchronous JavaScript™ and XML (AJAX), Ruby with Ruby on Rails™ (RoR), and Smalltalk with Seaside.